package com.idanchuang.component.redis.annotation;

import java.lang.annotation.*;

/**
 * @author yjy
 * @date 2020/5/8 9:53
 **/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface RedisLock {

    /** 锁名称 如果不指定，则为类名:方法名 */
    String value() default "";

    /** 获取锁的超时时间 ms */
    long tryTimeout() default 10000L;

    /** 持有锁的超时时间 ms */
    long lockTimeout() default 30000L;

    /** 是否自动续期 */
    boolean autoRenew() default false;

    /** 自旋获取锁间隔 ms */
    long loopInterval() default 10L;

    /** 自定义业务key (解析后追加在锁名称中) */
    String[] keys() default {};

    /** 错误提示信息 */
    String errMessage() default "";

}
